import {ref, onMounted, onUnmounted} from 'vue'

/**
 * @description 获取本地时间
 */
export function useTime() {

    let timer // 定时器
    const year = ref(0) // 年份
    const month = ref(0) // 月份
    const week = ref('') // 星期几
    const day = ref(0) // 天数
    const hour = ref<number | string>(0) // 小时
    const minute = ref<number | string>(0) // 分钟
    const second = ref(0) // 秒

    // 更新时间
    const updateTime = () => {
        const date = new Date()
        year.value = date.getFullYear()
        month.value = date.getMonth() + 1
        week.value =  '日一二三四五六'.charAt(date.getDay())
        day.value = date.getDate()
        hour.value = (date.getHours() + '')?.padStart(2, '0') || new Intl.NumberFormat(undefined, {minimumIntegerDigits: 2}).format(date.getHours())
        minute.value = (date.getMinutes() + '')?.padStart(2, '0') || new Intl.NumberFormat(undefined, {minimumIntegerDigits: 2}).format(date.getMinutes())
        second.value = date.getSeconds()
    }

    // 原生时间格式化
    // new Intl.DateTimeFormat('zh', {
    //     year: 'numeric',
    //     month: '2-digit',
    //     day: '2-digit',
    //     hour: '2-digit',
    //     minute: '2-digit',
    //     second: '2-digit',
    //     hour12: false
    // }).format(new Date())

    updateTime()

    onMounted(() => {
        clearInterval(timer)
        timer = setInterval(() => updateTime(), 1000)
    })

    onUnmounted(() => {
        clearInterval(timer)
    })

    return {month, day, hour, minute, second, week}
}
